import Dep from "./dep.js";
// 拦截器
export default function defineReactive(target, key, val) {
    // console.log('val ==> ', val);
    // console.log('target ==> ', target);
    // 收集依赖 (谁用了我 我就收集谁 下次更新的时候就更新这个依赖项)
    const dep = new Dep();
    Object.defineProperty(target, key, {
        get() {
            // 只有在模板上调用的时候 才会收集依赖 在js中使用 不收集
            if (Dep.target) {
                dep.depend()
            }
            return val
        },
        set(value) {
            // console.log('value ==> new ',value);
            if (val === value) return
            val = value
            // 不考虑设置的值为对象的情况
            // 通知更新
            dep.notify()
        }
    })
}